﻿using System.Collections.Generic;
using System.Linq;
using MIAP.DataAccess.Interfaces;
using MIAP.DataAccess.SqlServer.Model;
using MIAP.Entidades;

namespace MIAP.DataAccess.Implementaciones.SQL
{
    /// <summary>
    /// Clase de las operaciones de acceso a datos para obtener los permisos de un perfil.
    /// </summary>
    public class PermisosDao : IPermisosDao
    {
        /// <summary>
        /// Método privado en donde obtenemos los permisos
        /// </summary>
        /// <param name="idPerfil">Es el id del perfil del que se obtendrán los permisos.</param>
        /// <returns>Lista de permisos.</returns>
        public IList<PermisoInfo> GetPermisos(int idPerfil)
        {
            IList<PermisoInfo> result;
            using (var context = new MIAPDBEntities())
            {

                var query = from miapPermiso in context.MIAP_PERFIL_URL_PERFIL
                            where miapPermiso.ID_PERFIL == idPerfil
                            select new PermisoInfo
                            {
                                PerfilUrl = new PerfilUrlInfo
                                {
                                    IdPerfilUrl = miapPermiso.MIAP_PERFIL_URL.ID_PERFIL_URL
                                    ,
                                    Descripcion = miapPermiso.MIAP_PERFIL_URL.DESCRIPCION
                                    ,
                                    Nombre = miapPermiso.MIAP_PERFIL_URL.NOMBRE
                                    ,
                                    Url = miapPermiso.MIAP_PERFIL_URL.URL
                                    ,
                                    FechaCreacion = miapPermiso.MIAP_PERFIL_URL.FECHA_CREACION
                                    ,
                                    UsuarioCreacion = miapPermiso.MIAP_PERFIL_URL.USUARIO_CREACION
                                },

                                Perfil = new PerfilInfo
                                    {
                                        IdPerfil = miapPermiso.MIAP_PERFIL.ID_PERFIL
                                        ,
                                        Descripcion = miapPermiso.MIAP_PERFIL.DESCRIPCION
                                        ,
                                        EstaActivo = miapPermiso.MIAP_PERFIL.ACTIVO
                                        ,
                                        NombrePerfil = miapPermiso.MIAP_PERFIL.NOMBRE
                                        ,
                                        FechaCreacion = miapPermiso.MIAP_PERFIL.FECHA_CREACION
                                        ,

                                        Proyecto = new ProyectoInfo
                                        {
                                            IDProyecto = miapPermiso.MIAP_PERFIL.ID_PROYECTO.HasValue ?
                                                miapPermiso.MIAP_PERFIL.ID_PROYECTO.Value : 0
                                                ,
                                            NombreProyecto = miapPermiso.MIAP_PERFIL.MIAP_PROYECTO.NOMBRE
                                            ,
                                            Descripcion = miapPermiso.MIAP_PERFIL.MIAP_PROYECTO.DESCRIPCION
                                        }

                                    },
                                Descripcion = miapPermiso.MIAP_PERFIL_URL.DESCRIPCION
                                    ,
                                FechaCreacion = miapPermiso.FECHA_CREACION
                                    ,
                                UsuarioCreacion = miapPermiso.USUARIO_CREACION
                            };
                result = query.ToList();
            }

            return result;
        }
    }
}
